package beans;

import com.google.inject.Inject;
import DAO.Factory;
import beans.util.PageBean;
import guice.IExcelIteraction;
import logic.Good;
import org.apache.log4j.Logger;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Волков Олег on 04.06.14.
 */
public class UploadBean extends PageBean implements Serializable {

    private static final Logger logger = Logger.getLogger(UploadBean.class);

    @NotNull
    @Inject
    private IExcelIteraction excel;

    /**
     * Файл, для загрузки данных
     */
    private File excelFile;

    /**
     * Наименование бина
     */
    private String beanName = "GoodsBean";

    /**
     * Адрес для перенаправления на страницу с данными
     */
    private String pageURL = "hello";

    private boolean buttonRendered = true;

    private boolean enabled=false;

    private Long startTime;

    /**
     * Загрузка данных из Excel-файла
     */
    public void readExcel() throws SQLException {
        List<Good> list = new ArrayList<Good>();
        list = excel.excelImport(excelFile);
        Factory.getInstance().getGoodDAO().deleteAllGoods();
        Factory.getInstance().getGoodDAO().addGoods(list);
        goBack();

    }

    public void listener(UploadEvent event) throws Exception {
        UploadItem item = event.getUploadItem();
        excelFile = item.getFile();
    }

    /**
     * Перенаправдение на страницу с данными
     *
     */
    public void goBack() {
        GoodsBean goodsBean = (GoodsBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(beanName);
        goodsBean.reloadData();
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        try {
            response.sendRedirect(pageURL);
        } catch (IOException e) {
            logger.error("I/O problems: " + e.getMessage());
        }
    }


}
